package com.cy.store.mapper;

import com.cy.store.entity.Address;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
/**
 * @author ZhangSir
 */
@Mapper
public interface AddressMapper {

    /**
     * 计算用户一共有多少条收货地址
     * @param uid 用户的uid
     * @return 返回integer类型的数据，展示一共查询到了多少条收货地址
     */
    Integer countAddressByUid(@Param("uid") Integer uid);

    /**
     * 插入用户的收货地址信息
     * @param address 收货地址的数据
     * @return 返回integer类型的数据，通过返回值判断用户插入是否成功
     */
    Integer insertAddress(@Param("address") Address address);

    /**
     * 通过aid查询用户收货地址
     * @param aid 地址id
     * @return 返回单条地址信息的数据
     */
    Address findAddressByAid(@Param("aid") Integer aid);

    /**
     * 通过用户uid将用户收货地址全部设置为非默认
     * @param uid 用户uid
     * @return 受影响的行数
     */
    Integer updateNoDefaultByUid(@Param("uid") Integer uid);

    /**
     * 通过收货地址id（aid）修改用户默认收货地址
     * @param aid 收货地址id
     * @return 返回受影响的行数
     */
    Integer updateDefaultByAid(@Param("aid") Integer aid,
                               @Param("modifiedUser") String modifiedUser,
                               @Param("modifiedTime") Date modifiedTime);

    /**
     * 通过aid删除用户收货地址
     * @param aid 用户aid
     * @return 通过返回值来判断删除是否成功
     */
    Integer deleteAddressByAid(@Param("aid") Integer aid);

    /**
     * 查找最新一条修改过的收货地址
     * @param uid 用户uid、
     * @return 返回一条收货地址的数据
     */
    Address findLastUpdateAddressByUid(@Param("uid") Integer uid);
}
